// setTimeout(() => {
//     console.log(1)
// }, 0)
// Promise.resolve().then(() => {
//     console.log(2)
// })
// Promise.resolve().then(() => {
//     console.log(4)
// })
// console.log(3)
// 3 2 4 1


// setTimeout(() => {
//     console.log(1)
// }, 0)
// new Promise((resolve) => {
//     console.log(2)
//     resolve()
// }).then(() => {
//     console.log(3)
// }).then(() => {
//     console.log(4)
// })
// console.log(5)
// 2 5 3 4 1


// const first = () => (new Promise((resolve, reject) => {
//     console.log(3)
//     let p = new Promise((resolve, reject) => {
//         console.log(7)
//         setTimeout(() => {
//             console.log(5)
//             resolve(6);
//         }, 0)
//         resolve(1);
//     })
//     resolve(2);
//     p.then((arg) => {
//         console.log(arg)
//     })
// }))
//
//
// first().then((arg) => {
//     console.log(arg)
// })
// console.log(4)
// 3  7  4  1  2  5

setTimeout(() => {
    console.log("0")
}, 0)
new Promise((resolve, reject) => {
    console.log("1")
    resolve()
}).then(
    () => {
    console.log("2")
    new Promise((resolve, reject) => {
        console.log("3")
        resolve()
    }).then(() => {
        console.log("4")
    }).then(() => {
        console.log("5")
    })
}).then(
    () => {
    console.log("6")
})
new Promise((resolve, reject) => {
    console.log("7")
    resolve()
}).then(
    () => {
    console.log("8")
})
// 1 7

// 2 3 8  4 6
// 5
// 0


// async function async1() {
//     console.log(1);
//     await async2();
//     //await后面的代码为异步的
//     console.log(2);
// }
//
// async function async2() {
//     console.log(3);
// }
//
// console.log(4);
// setTimeout(function () {
//     console.log(5);
// }, 0)
//
// async1();
// new Promise(function (resolve) {
//     console.log(6);
//     resolve();
// }).then(function () {
//     console.log(7);
// });
// console.log(8);
// 4  1 3  6  8
// 2 7
// 5